package database

//数据库的初始化操作
//1.定义自己的数据库对象结构(对外提供GORM对象,外部可以基于连接数据库完成操作)
//2.完成数据库的连接初始化
//3.制作数据库相关方法(可以省略不做)
import (
	"fmt"

	_ "github.com/go-sql-driver/mysql"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

const (
	DRIVER   = "mysql"     //产品驱动(确定使用什么数据库)
	HOST     = "127.0.0.1" //IP地址(可以使用主机名localhost代替)(确定是哪台服务器)
	PORT     = "3306"      //端口(确定是哪个软件访问)
	USERNAME = "root"
	PASSWORD = "123456" //用户信息,确定访问权限(验证)
	PROTOCOL = "tcp"    //访问协议(确定连接的方式)
	CHARSET  = "utf8"   //字符集:根据客户端来决定(确定数据不会乱码)
	DATABASE = "shop"
)

var Gdb *gorm.DB

func init() {
	//配置DSN:"用户名:密码@协议(主机地址:端口)/数据库名字?charset=字符集"
	DSN := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", USERNAME, PASSWORD, HOST, PORT, DATABASE, CHARSET)

	//连接认证
	//MysqlDb, _ := sql.Open("mysql", DSN)
	var err error
	Gdb, err = gorm.Open(mysql.Open(DSN), &gorm.Config{
		//NameingStrategy:schema.NameingStrategy{
		// singular:true.//命名不会出现复数}
	})
	if err != nil {
		panic("数据库连接失败:" + err.Error())
	}

}

// type Student struct {
// 	ID     uint   `gorm:"primarykey"`
// 	Name   string `gorm:"size:12;unique"`
// 	Email  string `gorm:"size:50"`
// 	Gender string `gorm:"size:10"`
// }
